package org.jeecg.modules.test.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.api.params.HeightLevelUserParams;
import org.jeecg.api.query.HeightLevelUserQuery;
import org.jeecg.api.vo.HeightLevelUserVO;
import org.jeecg.modules.test.entity.HeightLevelUser;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author ZhangYu
 * @date 2023/9/24 23:45
 * @description 测试用户
 */
public interface IHeightLevelUserService extends IService<HeightLevelUser> {

    /**
     * 查询用户分页
     *
     * @param heightLevelUserQuery 用户查询条件
     * @return 用户分页
     */
    Page<HeightLevelUserVO> selectUserPage(HeightLevelUserQuery heightLevelUserQuery);

    /**
     * 新增用户
     *
     * @param userParams 用户新增or修改参数
     */
    void addUser(HeightLevelUserParams userParams);

    /**
     * 删除用户
     *
     * @param id 主键
     */
    void deleteById(Long id);

    /**
     * redis添加and查询
     *
     * @param test 加入参数
     * @return redis值
     */
    String redisAddFind(String test);

    /**
     * lambda测试
     */
    void lambdaTest();

    /**
     * 添加大量数据
     */
    void addBigData();

    /**
     * 远程调用测试
     */
    void longRangeTest();

    /**
     * 测试synchronized
     *
     * @param id 用户id
     */
    void testSynchronized(Long id);

    /**
     * 测试synchronized
     *
     * @param id 用户id
     */
    void testReentrantLock(Long id);

    /**
     * 测试es数据分页查询
     *
     * @param pageNo   当前页码
     * @param pageSize 每页条数
     */
    Page<HeightLevelUserVO> testElasticsearchPage(Integer pageNo, Integer pageSize);

}
